home *** CD-ROM | disk | FTP | other *** search
/ BCI NET / BCI NET Dec 94.iso / archives / programming / source / f2c3.2src.lha / f2c-for-SASC651 / libI77 / fio.h < prev    next >
Encoding:
C/C++ Source or Header  |  1994-06-30  |  2.3 KB  |  109 lines

  1. #include "stdio.h"
  2. #include "errno.h"
  3. #ifndef NULL
  4. /* ANSI C */
  5. #include "stddef.h"
  6. #endif
  7.  
  8. #ifndef SEEK_SET
  9. #define SEEK_SET 0
  10. #define SEEK_CUR 1
  11. #define SEEK_END 2
  12. #endif
  13.  
  14. #ifdef MSDOS
  15. #ifndef NON_UNIX_STDIO
  16. #define NON_UNIX_STDIO
  17. #endif
  18. #endif
  19.  
  20. #ifdef AMIGA
  21. #ifndef NON_UNIX_STDIO
  22. #define NON_UNIX_STDIO
  23. #endif
  24. #endif
  25.  
  26. #ifdef UIOLEN_int
  27. typedef int uiolen;
  28. #else
  29. typedef long uiolen;
  30. #endif
  31.  
  32. /*units*/
  33. typedef struct
  34. {    FILE *ufd;    /*0=unconnected*/
  35.     char *ufnm;
  36. #ifndef MSDOS
  37.     long uinode;
  38.     int udev;
  39. #endif
  40.     int url;    /*0=sequential*/
  41.     flag useek;    /*true=can backspace, use dir, ...*/
  42.     flag ufmt;
  43.     flag uprnt;
  44.     flag ublnk;
  45.     flag uend;
  46.     flag uwrt;    /*last io was write*/
  47.     flag uscrtch;
  48. } unit;
  49.  
  50. extern flag f__init;
  51. extern cilist *f__elist;    /*active external io list*/
  52. extern flag f__reading,f__external,f__sequential,f__formatted;
  53. #undef Void
  54. #ifdef KR_headers
  55. #define Void /*void*/
  56. extern int (*f__getn)(),(*f__putn)();    /*for formatted io*/
  57. extern long f__inode();
  58. extern VOID sig_die();
  59. extern int (*f__donewrec)(), t_putc(), x_wSL();
  60. extern int c_sfe(), err__fl(), xrd_SL();
  61. #else
  62. #define Void void
  63. #ifdef __cplusplus
  64. extern "C" {
  65. #endif
  66. extern int (*f__getn)(void),(*f__putn)(int);    /*for formatted io*/
  67. extern long f__inode(char*,int*);
  68. extern void sig_die(char*,int);
  69. extern void f__fatal(int,char*);
  70. extern int t_runc(alist*);
  71. extern int f__nowreading(unit*), f__nowwriting(unit*);
  72. extern int fk_open(int,int,ftnint);
  73. extern int en_fio(void);
  74. extern void f_init(void);
  75. extern int (*f__donewrec)(void), t_putc(int), x_wSL(void);
  76. extern void b_char(char*,char*,ftnlen), g_char(char*,ftnlen,char*);
  77. extern int c_sfe(cilist*), z_rnew(void);
  78. extern int isatty(int);
  79. extern int err__fl(int,int,char*);
  80. extern int xrd_SL(void);
  81. #ifdef __cplusplus
  82.     }
  83. #endif
  84. #endif
  85. extern int (*f__doend)(Void);
  86. extern FILE *f__cf;    /*current file*/
  87. extern unit *f__curunit;    /*current unit*/
  88. extern unit f__units[];
  89. #define err(f,m,s) {if(f) errno= m; else f__fatal(m,s); return(m);}
  90. #define errfl(f,m,s) return err__fl((int)f,m,s)
  91.  
  92. /*Table sizes*/
  93. #define MXUNIT 100
  94.  
  95. extern int f__recpos;    /*position in current record*/
  96. extern int f__cursor;    /* offset to move to */
  97. extern int f__hiwater;    /* so TL doesn't confuse us */
  98.  
  99. #define WRITE    1
  100. #define READ    2
  101. #define SEQ    3
  102. #define DIR    4
  103. #define FMT    5
  104. #define UNF    6
  105. #define EXT    7
  106. #define INT    8
  107.  
  108. #define buf_end(x) (x->_flag & _IONBF ? x->_ptr : x->_base + BUFSIZ)
  109.